<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        const list = [1, 2, 3, 4, 5, 6]
        // 模拟forEach函数
        function myEach(list, fn) {
            for (let i = 0; i < list.length; i++) {
                let item = list[i]
                let index = i
                let array = list
                fn(item, index, array)
            }
        }
        myEach(list, function fn(item, index, array) {
            console.log(item, index, array)
        })

        const arr = [1, 2, 3, 4, 5, 6]
        //map函数 遍历函数  每次循环时执行传入的回调函数，接收回调函数的返回值放到新的数组中
        // function myMap() {
        //    
        //     let array = []
        // 
        //     for (var i = 0; i < arr.length; i++) {
        //         let item = arr[i]
        //         fn(item)
        //     }
        //     console.log(array)
        // }
        // myMap(arr,function fn(item) {
        //         array.push(item + 1)
        //     })

        //filter函数  遍历数组  每次循环时执行传入的回调函数，回调函数返回一个条件，把满足的条件的元素筛选出来，放到新的数组中
        // function myFilter() {
        //     const arr = [1, 2, 3, 4, 5, 6]
        //     let array = []

        //     for (let i = 0; i < arr.length; i++) {
        //         let item = arr[i]
        //         fn(item)
        //     }
        //     console.log(array)
        // }
        // myFilter(arr, function fn(item) {
        //     if (item > 3) {
        //         array.push(item)
        //     }
        // })

        //some    遍历数组 每次循环时执行传入的回调函数,, 回调函数返回一个条件 只有一个元素满足条件则返回true
        //判断数组中是否存在 满足条件的元素 (只要有一个满足即可)
        // function mySome() {
        //  
        //     let flag = false
        // 
        //     for (let i = 0; i < arr.length; i++) {
        //         let item = arr[i]
        //         fn(item)
        //      if (flag) {
        //     break
        // }
        //     }
        //     console.log(flag)
        // }
        // mySome(arr, function fn(item) {
        //         if (item > 3) {
        //             flag = true
        //         }
        //     })

        // every    遍历数组 每次循环时执行传入的回调函数, 回调函数返回一个条件 所有元素都满足条件则返回true,有一个不满足 则返回false
        // 判断数组中的元素是否都满足条件 (只要有一个不满足则返回false)
        function myEvery() {
            let flag = false
            for (let i = 0; i < arr.length; i++) {
                let item = arr[i]
                fn(item)
                if (!flag) {
                    break
                }
            }
            console.log(flag)
        }
        myEvery(arr, function fn(item) {
            flag = false
            if (item > 0) {
                flag = true
            }
        })
    </script>
</body>

</html>